"""
封装使用picke和base64编解码购物车字典数据
"""

import pickle,base64

class CookieSecret(object):

    # 1、编码/加密
    @classmethod
    def dumps(cls, cart_dict):
        """
        编码
        参数cart_dict，是购物车字典数据
        :return: 返回编码后的购物车字符串数据
        """
        # (1)、使用pickle将cart_dict编码成字节
        cart_bytes = pickle.dumps(cart_dict)
        # (2)、使用base64将字节编码成字符串
        cart_str = base64.b64encode(cart_bytes).decode()

        return cart_str


    # 2、解码/解密
    @classmethod
    def loads(cls, cart_str):
        """
        解码
        :param cart_str: 购物车cookie中的字符串数据
        :return: 购物车字典数据
        """
        # (1)、使用base64把购物车字符串数据解码成字节
        cart_bytes = base64.b64decode(cart_str.encode())
        # (2)、使用pickle把字节数据解码成购物车字典
        cart_dict = pickle.loads(cart_bytes)

        return cart_dict
